<?php
/**
 * Map24ReverseGeocoder class file
 * 
 * @author    {author}
 * @copyright {copyright}
 * @package   {package}
 */

/**
 * RequestHeader.CustomerKeyValuePair class
 */
if ( !class_exists('RequestHeaderCustomerKeyValuePair') )
{
require_once 'RequestHeader.CustomerKeyValuePair.php5';
}
/**
 * ResponseHeader class
 */
if ( !class_exists('ResponseHeader') )
{
require_once 'ResponseHeader.php5';
}
/**
 * Shape class
 */
if ( !class_exists('Shape') )
{
require_once 'Shape.php5';
}
/**
 * MapConfigurationResponse.LayerConfiguration class
 */
if ( !class_exists('MapConfigurationResponseLayerConfiguration') )
{
require_once 'MapConfigurationResponse.LayerConfiguration.php5';
}
/**
 * MapConfigurationResponse.MapConfiguration class
 */
if ( !class_exists('MapConfigurationResponseMapConfiguration') )
{
require_once 'MapConfigurationResponse.MapConfiguration.php5';
}
/**
 * MapConfigurationResponse class
 */
if ( !class_exists('MapConfigurationResponse') )
{
require_once 'MapConfigurationResponse.php5';
}
/**
 * RequestHeader class
 */
if ( !class_exists('RequestHeader') )
{
require_once 'RequestHeader.php5';
}
/**
 * Coordinate class
 */
if ( !class_exists('Coordinate') )
{
require_once 'Coordinate.php5';
}
/**
 * MapObject.Attribute class
 */
if ( !class_exists('MapObjectAttribute') )
{
require_once 'MapObject.Attribute.php5';
}
/**
 * CoordinatesArray class
 */
if ( !class_exists('CoordinatesArray') )
{
require_once 'CoordinatesArray.php5';
}
/**
 * MapObject class
 */
if ( !class_exists('MapObject') )
{
require_once 'MapObject.php5';
}
/**
 * ReverseGeocodedLayer class
 */
if ( !class_exists('ReverseGeocodedLayer') )
{
require_once 'ReverseGeocodedLayer.php5';
}
/**
 * ReverseGeocodedPoint class
 */
if ( !class_exists('ReverseGeocodedPoint') )
{
require_once 'ReverseGeocodedPoint.php5';
}
/**
 * ReverseGeocodePointsResponse class
 */
if ( !class_exists('ReverseGeocodePointsResponse') )
{
require_once 'ReverseGeocodePointsResponse.php5';
}
/**
 * LayerSpecifier class
 */
if ( !class_exists('LayerSpecifier') )
{
require_once 'LayerSpecifier.php5';
}
/**
 * ReverseGeocodeSearchStrategy class
 */
if ( !class_exists('ReverseGeocodeSearchStrategy') )
{
require_once 'ReverseGeocodeSearchStrategy.php5';
}
/**
 * ReverseGeocodeSearchHint class
 */
if ( !class_exists('ReverseGeocodeSearchHint') )
{
require_once 'ReverseGeocodeSearchHint.php5';
}
/**
 * ReverseGeocodePointsRequest class
 */
if ( !class_exists('ReverseGeocodePointsRequest') )
{
require_once 'ReverseGeocodePointsRequest.php5';
}
/**
 * AsyncResponse class
 */
if ( !class_exists('AsyncResponse') )
{
require_once 'AsyncResponse.php5';
}
/**
 * JobStatus class
 */
if ( !class_exists('JobStatus') )
{
require_once 'JobStatus.php5';
}
/**
 * GeocodedAddress.Quality class
 */
if ( !class_exists('GeocodedAddressQuality') )
{
require_once 'GeocodedAddress.Quality.php5';
}
/**
 * GeocodedAddress.Alternative class
 */
if ( !class_exists('GeocodedAddressAlternative') )
{
require_once 'GeocodedAddress.Alternative.php5';
}
/**
 * GeocodedAddress class
 */
if ( !class_exists('GeocodedAddress') )
{
require_once 'GeocodedAddress.php5';
}
/**
 * GeocodeAddressesResponse class
 */
if ( !class_exists('GeocodeAddressesResponse') )
{
require_once 'GeocodeAddressesResponse.php5';
}
/**
 * ReverseGeocodeAddressesRequest class
 */
if ( !class_exists('ReverseGeocodeAddressesRequest') )
{
require_once 'ReverseGeocodeAddressesRequest.php5';
}

/**
 * Map24ReverseGeocoder class
 * 
 *  
 * 
 * @author    {author}
 * @copyright {copyright}
 * @package   {package}
 */
class Map24ReverseGeocoder {

  private $client;

  private $wsdl = null;

  /**
   *
   * @param MapTP-System the request should be executed on $server
   * @param Map24Id $mid
   * @param Map24SessionId $sid
   */ 
  public function __construct($server=null, $mid=null, $sid=null, $interface='map24/webservices1.5') {
    if($server==null || $mid==null || $sid==null){
      echo "ERROR: Not enough or invalid arguments! Unable to initialise SoapClient.";
    }
    else {
      $this->wsdl = "http://".$server."/".$interface."?wsdl=Map24ReverseGeocoder";
      $this->client = new SoapClient($this->wsdl, array('location' => "http://".$server."/".$interface."?soap=Map24ReverseGeocoder&mid=".$mid."&sid=".$sid, 'trace' => 0, 'exceptions' => 1));
    }
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @return MapConfigurationResponse
   */
  public function getMapConfiguration(RequestHeader $RequestHeader) {
    return $this->client->getMapConfiguration($RequestHeader);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param ReverseGeocodePointsRequest $ReverseGeocodePointsRequest
   * @return ReverseGeocodePointsResponse
   */
  public function reverseGeocodePoints(RequestHeader $RequestHeader, ReverseGeocodePointsRequest $ReverseGeocodePointsRequest) {
    return $this->client->reverseGeocodePoints($RequestHeader, $ReverseGeocodePointsRequest);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param ReverseGeocodePointsRequest $ReverseGeocodePointsRequest
   * @return AsyncResponse
   */
  public function _async_reverseGeocodePoints(RequestHeader $RequestHeader, ReverseGeocodePointsRequest $ReverseGeocodePointsRequest) {
    return $this->client->_async_reverseGeocodePoints($RequestHeader, $ReverseGeocodePointsRequest);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return JobStatus
   */
  public function _async_job_status(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_status($AsyncResponse);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return JobStatus
   */
  public function _async_job_abort(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_abort($AsyncResponse);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return ReverseGeocodePointsResponse
   */
  public function _async_job_retrieve_reverseGeocodePoints(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_retrieve_reverseGeocodePoints($AsyncResponse);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param ReverseGeocodeAddressesRequest $ReverseGeocodeAddressesRequest
   * @return GeocodeAddressesResponse
   */
  public function reverseGeocodeAddresses(RequestHeader $RequestHeader, ReverseGeocodeAddressesRequest $ReverseGeocodeAddressesRequest) {
    return $this->client->reverseGeocodeAddresses($RequestHeader, $ReverseGeocodeAddressesRequest);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param ReverseGeocodeAddressesRequest $ReverseGeocodeAddressesRequest
   * @return AsyncResponse
   */
  public function _async_reverseGeocodeAddresses(RequestHeader $RequestHeader, ReverseGeocodeAddressesRequest $ReverseGeocodeAddressesRequest) {
    return $this->client->_async_reverseGeocodeAddresses($RequestHeader, $ReverseGeocodeAddressesRequest);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return GeocodeAddressesResponse
   */
  public function _async_job_retrieve_reverseGeocodeAddresses(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_retrieve_reverseGeocodeAddresses($AsyncResponse);
  }

}

?>
